package com.ruoyi.safe.mapper;

import com.ruoyi.safe.domain.BizDutyRegion;
import com.ruoyi.safe.domain.BizRegionCooperator;
import com.ruoyi.safe.domain.vo.BizDutyRegionVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 责任区域Mapper接口
 *
 * @author buxi
 * @date 2023-11-11
 */
@Mapper
public interface BizDutyRegionMapper
{
    /**
     * 查询责任区域
     *
     * @param id 责任区域主键
     * @return 责任区域
     */
    public BizDutyRegion selectBizDutyRegionById(Long id);

    /**
     * 查询责任区域列表
     *
     * @param bizDutyRegion 责任区域
     * @return 责任区域集合
     */
    public List<BizDutyRegion> selectBizDutyRegionList(BizDutyRegion bizDutyRegion);

    /**
     * 查询责任区域列表
     *
     * @param bizDutyRegion 责任区域
     * @return 责任区域集合
     */
    public List<BizDutyRegionVO> selectBizDutyRegionListVO(BizDutyRegion bizDutyRegion);

    /**
     * 新增责任区域
     *
     * @param bizDutyRegion 责任区域
     * @return 结果
     */
    public int insertBizDutyRegion(BizDutyRegion bizDutyRegion);

    /**
     * 修改责任区域
     *
     * @param bizDutyRegion 责任区域
     * @return 结果
     */
    public int updateBizDutyRegion(BizDutyRegion bizDutyRegion);

    /**
     * 批量修改责任区域排序
     * @param bizDutyRegion
     * @return
     */
    int updateBizDutyRegionSort(List<BizDutyRegion> bizDutyRegion);

    /**
     * 删除责任区域
     *
     * @param id 责任区域主键
     * @return 结果
     */
    public int deleteBizDutyRegionById(@Param("id") Long id);

    /**
     * 批量删除责任区域
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBizDutyRegionByIds(Long[] ids);

    /**
     * 新增区域关联的合作单位
     */
    int insertRegionCooperator(List<BizRegionCooperator> bizRegionCooperatorList);

    /**
     * 通过区域id删除关联的合作单位
     * @param id
     * @return
     */

    int deleteRegionCooperatorByRegionId(Long id);

    /**
     * 通过区域ids批量删除关联的合作单位
     * @param ids
     * @return
     */
    int deleteRegionCooperatorByRegionIds(Long[] ids);

    /**
     * 通过ids 批量查询
     *
     * @param ids
     * @return
     */
    List<BizDutyRegion> selBizDutyRegionListByIds(Long[] ids);

    /**
     * 通过sort字段完成上移操作
     */
    int selectBizDutyRegionMaxSort(@Param("parentId") Long parentId ,
                                   @Param("projectId") Long projectId);

    /**
     * 通过sort,parentId,projectId查询是否存在为第一条或者最后一条数据
     *
     * @param sort
     * @param parentId
     * @param projectId
     * @return
     */
    BizDutyRegion selectBizDutyRegionBySortAndParentId(@Param("sort") Integer sort,
                                                       @Param("parentId")Long parentId ,
                                                       @Param("projectId")Long projectId);


    /**
     * 根据项目id和区域名查询
     * @param projectId
     * @param dutyArea
     * @return
     */
    BizDutyRegion selectByProjectIdAndName(@Param("projectId") Long projectId, @Param("regionName") String dutyArea);

    int checkIds(Long[] ids);
}
